﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using l1cs.server.model.Instance;

namespace l1cs.server.serverpackets
{
    public class S_InvList : ServerBasePacket
    {
        private static Logger _log = Logger.getLogger( typeof( S_InvList ).FullName );

        /**
         * インベントリにアイテムを複数個まとめて追加する。
         */
        public S_InvList( object[] items )
        {
            writeC( Opcodes.S_OPCODE_INVLIST );
            writeC( items.Length ); // アイテム数

            foreach ( L1ItemInstance item in items )
            {
                writeD( item.getId() );
                writeC( item.getItem().getUseType() );
                writeC( 0 );
                writeH( item.get_gfxid() );
                writeC( item.getBless() );
                writeD( item.getCount() );
                writeC( ( item.isIdentified() ) ? 1 : 0 );
                writeS( item.getViewName() );
                if ( !item.isIdentified() )
                {
                    // 未鑑定の場合ステータスを送る必要はない
                    writeC( 0 );
                }
                else
                {
                    byte[] status = item.getStatusBytes();
                    writeC( status.Length );
                    foreach ( byte b in status )
                    {
                        writeC( b );
                    }
                }
            }
        }

        override
        public byte[] getContent()
        {
            return _bao.ToArray();
        }

        override
        public String getType()
        {
            return "[S] S_InvList";
        }
    }
}
